package main

import "go-leetcode/leetcode/utils"

// 24. 两两交换链表中的节点
func main() {

}

func swapPairs(head *utils.ListNode) *utils.ListNode {
	// 还可以以递归的方式来处理，曾经写过，不写了
	dummy := &utils.ListNode{
		Next: head,
	}
	point := dummy

	for point.Next != nil && point.Next.Next != nil { // 换位置
		next := point.Next
		nextNext := point.Next.Next

		next.Next = nextNext.Next
		nextNext.Next = next
		point.Next = nextNext

		point = point.Next.Next
	}

	return dummy.Next
}

// 给你一个链表，两两交换其中相邻的节点，并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题（即，只能进行节点交换）。
//
//示例 1：
//
//输入：head = [1,2,3,4]
//输出：[2,1,4,3]
//示例 2：
//
//输入：head = []
//输出：[]
//示例 3：
//
//输入：head = [1]
//输出：[1]
//
//提示：
//
//链表中节点的数目在范围 [0, 100] 内
//0 <= Node.val <= 100
